package primalgorithms.array;

import java.util.ArrayList;
import java.util.List;

public class _05SingleNum {
    public static int singleNumber(int[] nums) {
        /**
         * 重点！！！
         * 使用异或运算，将所有值进行异或
         * 异或运算，相异为真，相同为假，所以 a^a = 0 ;0^a = a
         * 因为异或运算 满足交换律 a^b^a = a^a^b = b 所以数组经过异或运算，单独的值就剩下了
        */
        int reduce = 0;
        for (int num : nums){
            reduce = reduce ^ num;
        }
        return reduce;
    }
}
